package datastruct

//布隆过滤器，就是多个hash函数计算值映射道位图中，通过每个hash key判断位图是否存在数据
//对于不存在的是确定的，但是存在是不一定的
type BitMap struct {
	bytes []byte
	nbits int
}

func (b *BitMap) Set(k int) {
	if k > b.nbits {
		return
	}
	byteIndex := k / 8
	bitIndex := k % 8
	b.bytes[byteIndex] |= 1 << bitIndex
}
func (b *BitMap) Get(k int) bool {
	if k > b.nbits {
		return false
	}
	byteIndex := k / 8
	bitIndex := k % 8
	return b.bytes[byteIndex]&(1<<bitIndex) != 0
}
func (b *BitMap) Remove(k int)  {
	if k > b.nbits {
		return
	}
	byteIndex := k / 8
	bitIndex := k % 8
	b.bytes[byteIndex]&=^(1<<bitIndex)
}
